Skip to main content

Libero Scenes

LW-BenchHub utilizes USD-based scene environments built on Isaacsim's robust simulation foundation for the Lightwheel-Libero-Tasks, providing diverse manipulation scenarios across different room types.

USD-Based Scene Architecture

Libero scenes are built using Universal Scene Description (USD) format, providing:

  • High-fidelity rendering with realistic lighting and materials
  • Fully interactive objects including furniture, containers, and manipulable items
  • Physics-accurate simulation through IsaacLab's physics engine
  • Optimized performance for large-scale parallel training

Scene Distribution System

Remote Scene Loading

LW-BenchHub implements a distributed scene management system that automatically handles scene acquisition:

# Scenes are automatically downloaded and cached
scene_name = "libero-1-1" # Scene identifier

Caching Architecture

  • Local cache: ~/.cache/lightwheel_sdk/floorplan/
  • Automatic versioning: Ensures scene consistency across updates
  • Incremental download: Only downloads new or updated scenes
  • ZIP compression: Efficient scene package distribution

Scene Configuration

Scene Types

Scene IDScene TypeDescriptionKey Features
libero-1-1Kitchen SceneKitchen environment with table top setupKitchen-specific objects and furniture layout
libero-2-2Living Room SceneLiving room environment for manipulation tasksLiving room furniture and object arrangements
libero-4-4Study SceneStudy room environment with desk and storageStudy-specific furniture and object placement
libero-5-5Floor Task SceneFloor-level manipulation environmentGround-level tasks with floor-based objects
libero-8-8Kitchen SceneDifferent kitchen background for advanced tasksAlternative kitchen layout with complex scenarios

Technical Implementation

SceneLoader Class

The core scene management is handled by the FloorplanLoader:

from lw_benchhub.core.scenes.loader.floorplan import FloorplanLoader

# Initialize loader with remote server
loader = FloorplanLoader(host="scene_server_host")

# Asynchronous scene acquisition
loader.acquire_usd(scene='libero', layout_id=1, style_id=1)
usd_path = loader.wait_for_result()

Scene Integration

class LiberoEnvCfg(LwScene):
scene_name: str = "libero-1-1"
layout_id: int = 1
style_id: int = 1
scene_type: str = "libero"

# Enable specific objects for tasks
enable_objects: List[str] = ["mokapot", "stovetop"]

Object Management

Interactive Elements

Libero scenes include fully functional objects across different environments:

Kitchen Scenes (1-1, 8-8)

  • Containers: Baskets, bowls, plates, mugs
  • Food Items: Alphabet soup, cream cheese, butter
  • Beverages: Wine bottles, various containers
  • Utensils: Kitchen tools and accessories

Living Room Scene (2-2)

  • Furniture: Sofa, foods, mugs
  • Decorative Items: Household objects and accessories
  • Containers: Living room appropriate storage items

Study Scene (4-4)

  • Desk Accessories: Books, study materials, desk organizers
  • Storage: Shelves, cabinets, storage containers
  • Study Tools: Writing instruments, reference materials

Floor Task Scene (5-5)

  • Ground-level Objects: Floor-based containers and items
  • Low-height Furniture: Accessible from ground level
  • Floor Storage: Ground-level storage solutions

Task-Scene Matching Examples

task_scene_mapping = {
# Kitchen tasks
"L90K9TurnOnTheStove": "libero-1-1",
"LSPickUpTheBlackBowlFromTableCenterAndPlaceItOnThePlate": "libero-8-8",

# Living room tasks
"L10L2PutBothTheCreamCheeseBoxAndTheButterInTheBasket": "libero-2-2",

# Study room tasks
"L90S4PickUpTheBookOnTheLeftAndPlaceItOnTopOfTheShelf": "libero-4-4",

# Floor tasks
"LOPickUpTheAlphabetSoupAndPlaceItInTheBasket": "libero-5-5",
}

These Libero scenes provide a comprehensive testing environment for evaluating robotic manipulation capabilities across various scenarios and complexity levels.